#include "myinclude.h"

class mouseUse;

//void onMouseCallback(int event, int x, int y, int flag, void* v_param);

class mouseUse{
    protected:
         cv::Size resize;
         std::string name;
         std::string unit;
         sl::zed::Mat * dep;
         cv::vector<cv::Point3f> dist;
    public:
         mouseUse(){};
         mouseUse(Mat* img, cv::Size, UNIT zunit, std::string sname);
         virtual ~mouseUse(){};
         void updateData(sl::zed::Mat * p_data){
            dep = p_data;
         }

        cv::vector<cv::Point3f> getdist(){
           return dist;
        }
};

class mouseDistance : public mouseUse{
    protected:
        cv::vector<cv::Point3f> dist;
    public:
        mouseDistance(Mat* img, cv::Size, UNIT zunit, std::string sname);
        ~mouseDistance(){};
        friend void onMouseCallbackDepth(int event, int x, int y, int flag, void* param);
};


class mouse3D : public mouseUse{
    public:
        mouse3D(Mat* img, cv::Size, UNIT zunit, std::string sname);
        ~mouse3D(){};
        friend void onMouseCallbackfor3D(int event, int x, int y, int flag, void* param);
};
